const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const path = require('path');

// 测试AI推理服务
async function testAIInference() {
  try {
    console.log('🔍 开始测试AI推理服务...');

    // 检查AI服务健康状态
    console.log('\n1. 检查AI服务健康状态...');
    const healthResponse = await axios.get('http://localhost:5001/health');
    console.log('✅ AI服务健康状态:', healthResponse.data);

    // 查找一个测试图像
    const uploadDir = path.join(__dirname, 'endo_sight_uc_server/uploads/medical_images');
    console.log('\n2. 查找测试图像...');
    console.log('📁 上传目录:', uploadDir);

    if (!fs.existsSync(uploadDir)) {
      console.log('❌ 上传目录不存在');
      return;
    }

    const files = fs.readdirSync(uploadDir);
    if (files.length === 0) {
      console.log('❌ 上传目录中没有文件');
      return;
    }

    const testFile = files.find(f => f.endsWith('.jpg') || f.endsWith('.jpeg') || f.endsWith('.png'));
    if (!testFile) {
      console.log('❌ 没有找到图像文件');
      return;
    }

    console.log('✅ 找到测试图像:', testFile);

    // 测试AI推理
    console.log('\n3. 测试AI推理...');
    const form = new FormData();
    const filePath = path.join(uploadDir, testFile);
    const fileStream = fs.createReadStream(filePath);

    form.append('file', fileStream, {
      filename: testFile,
      contentType: 'image/jpeg'
    });

    const startTime = Date.now();
    const response = await axios.post('http://localhost:5001/v1/predict', form, {
      headers: form.getHeaders(),
      timeout: 30000
    });

    const responseTime = Date.now() - startTime;

    console.log('✅ AI推理成功!');
    console.log('⏱️ 响应时间:', responseTime + 'ms');
    console.log('📊 推理结果:', JSON.stringify(response.data, null, 2));

  } catch (error) {
    console.error('❌ 测试失败:', error.message);
    if (error.response) {
      console.error('状态码:', error.response.status);
      console.error('错误数据:', error.response.data);
    }
  }
}

// 测试后端AI推理服务调用
async function testBackendAIIntegration() {
  try {
    console.log('\n🔍 测试后端AI推理集成...');

    // 直接调用后端的AI推理服务
    const { callInferenceService } = require('./endo_sight_uc_server/src/services/aiInferenceService.js');

    // 查找测试图像
    const uploadDir = path.join(__dirname, 'endo_sight_uc_server/uploads/medical_images');
    const files = fs.readdirSync(uploadDir);
    const testFile = files.find(f => f.endsWith('.jpg') || f.endsWith('.jpeg') || f.endsWith('.png'));

    if (!testFile) {
      console.log('❌ 没有找到测试图像');
      return;
    }

    const filePath = path.join(uploadDir, testFile);
    const testTaskId = Date.now(); // 使用时间戳作为测试任务ID

    console.log('🧪 测试任务ID:', testTaskId);
    console.log('📁 测试文件:', filePath);

    await callInferenceService(testTaskId, filePath);

    console.log('✅ 后端AI推理集成测试成功!');

  } catch (error) {
    console.error('❌ 后端AI推理集成测试失败:', error.message);
    console.error('详细错误:', error);
  }
}

// 运行测试
async function runTests() {
  console.log('🚀 开始AI推理服务测试');

  await testAIInference();
  await testBackendAIIntegration();

  console.log('\n✨ 测试完成');
}

runTests();